// Copyright [2020] <unknown>
#include <bits/stdc++.h>
using namespace std;
// #define ONLINE_JUDGE
#ifndef ONLINE_JUDGE
#define dbg(x...) { cerr << "\033[32;1m" << #x << " -> "; err(x); }
void err() { cerr << "\033[39;0m" << endl; }
template<typename T, typename... A>
void err(T a, A... x) { cerr << a << ' '; err(x...); }
#else
#define dbg(...)
#endif

#define sz(x) ((int)x.size())

typedef long long LL;

const int N = 2e5+50, MOD = 998244353;

void pd(int n) {
    int lim=1;
    for (int i=1; i<=n; ++i)
        lim *= 10;
    static int ans[N];
    memset(ans, 0, sizeof ans);
    for (int i=0; i<lim; ++i) {
        static char s[100];
        int len = 0;
        for (int j=i; j; j/=10)
            s[len++] = j % 10 + '0';
        if (i == 0)
            dbg(len, n)
        for (; len<n;)
            s[len++] = '0';
        if (i == 0)
            dbg(len, n);
        reverse(s, s+len);
        s[len] = 0;
        // printf("%s\n", s);
        for (int j=0, k; j<len; j=k+1) {
            k = j;
            while (k+1<len && s[j] == s[k+1])
                ++k;
            ans[k-j+1]++;
        }
    }
    for (int i=1; i<=n; ++i)
        printf("%d ", ans[i]);
    putchar('\n');
}

LL p10[N];

int main(int argc, char const *argv[]) {
    // code
    // pd(1);
    // pd(2);
    // pd(3);
    // pd(4);
    p10[0] = 1;
    for (int i=1; i<N; ++i)
        p10[i] = p10[i-1] * 10 % MOD;
    

    int n;
    cin >> n;
    for (int i=1; i<n; ++i) {
        LL tans = 18LL * p10[n-i] % MOD + (n-i-1) * 81LL % MOD * p10[n-i-1] % MOD;
        tans %= MOD;
        printf("%lld ", tans);
    }
    puts("10");

    return 0;

}
